#include <opencv2/opencv.hpp>
#include <vector>

using namespace cv;
using namespace std;

int main()
{
	VideoCapture cam(0);
    //创建级联分类器
	CascadeClassifier classifier("/usr/share/opencv/haarcascades/haarcascade_frontalface_alt2.xml");

	namedWindow("Camera");

	Mat image;
	Mat gray; //保存转换后的灰度图像

	while(1)
	{
		cam >> image;
		cvtColor(image, gray, COLOR_BGR2GRAY);  //将3通道的彩色图像转换为单通道灰度图像
		equalizeHist(gray, gray);  //对图像进行均衡化处理，提高图像对比度，优化分类器的效果
		vector<Rect> faces;  //定义数组，保存检测到的人脸区域
		classifier.detectMultiScale(gray, faces); //检测人脸
		if (faces.size())  //是否找到人脸
		{
			rectangle(image, faces[0], CV_RGB(255, 0, 0)); //将找到的人脸区域用矩形框标记出来
		}
		imshow("Camera", image);
		if (waitKey(40) != 255)
		{
			break;
		}
	}
}